{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import numpy.linalg as npl\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "data = np.concatenate([[.3*np.random.randn(2) for i in range(100)],\n",
    "                     [np.array([1,1])+.3*np.random.randn(2) for i in range(100)],\n",
    "                     [np.array([1,-1])+.3*np.random.randn(2) for i in range(100)]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x11e28b358>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter([data[i][0] for i in range(len(data))],[data[i][1] for i in range(len(data))])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "N = len(data) #vector count\n",
    "n = len(data[0]) #vector dimension\n",
    "k = 3 #initialized group count\n",
    "assignments = [np.random.randint(3) for i in range(N)]\n",
    "group0 = [i for i in range(N) if assignments[i] == 0] #indices of group members\n",
    "group1 = [i for i in range(N) if assignments[i] == 1]\n",
    "group2 = [i for i in range(N) if assignments[i] == 2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[1,\n",
       " 2,\n",
       " 0,\n",
       " 2,\n",
       " 0,\n",
       " 1,\n",
       " 1,\n",
       " 1,\n",
       " 1,\n",
       " 0,\n",
       " 2,\n",
       " 2,\n",
       " 2,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 2,\n",
       " 2,\n",
       " 2,\n",
       " 1,\n",
       " 2,\n",
       " 0,\n",
       " 1,\n",
       " 2,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 2,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 1,\n",
       " 1,\n",
       " 2,\n",
       " 0,\n",
       " 0,\n",
       " 2,\n",
       " 1,\n",
       " 2,\n",
       " 1,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 2,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 2,\n",
       " 1,\n",
       " 1,\n",
       " 1,\n",
       " 2,\n",
       " 1,\n",
       " 2,\n",
       " 2,\n",
       " 2,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 1,\n",
       " 2,\n",
       " 2,\n",
       " 0,\n",
       " 2,\n",
       " 1,\n",
       " 1,\n",
       " 2,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 2,\n",
       " 0,\n",
       " 2,\n",
       " 2,\n",
       " 2,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 2,\n",
       " 2,\n",
       " 0,\n",
       " 1,\n",
       " 1,\n",
       " 2,\n",
       " 1,\n",
       " 2,\n",
       " 1,\n",
       " 2,\n",
       " 1,\n",
       " 1,\n",
       " 1,\n",
       " 0,\n",
       " 2,\n",
       " 2,\n",
       " 2,\n",
       " 1,\n",
       " 1,\n",
       " 2,\n",
       " 0,\n",
       " 0,\n",
       " 2,\n",
       " 1,\n",
       " 2,\n",
       " 1,\n",
       " 2,\n",
       " 0,\n",
       " 0,\n",
       " 2,\n",
       " 2,\n",
       " 1,\n",
       " 0,\n",
       " 1,\n",
       " 2,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 1,\n",
       " 2,\n",
       " 2,\n",
       " 2,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 2,\n",
       " 0,\n",
       " 2,\n",
       " 1,\n",
       " 2,\n",
       " 2,\n",
       " 2,\n",
       " 1,\n",
       " 1,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 2,\n",
       " 0,\n",
       " 1,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 1,\n",
       " 0,\n",
       " 2,\n",
       " 2,\n",
       " 2,\n",
       " 1,\n",
       " 2,\n",
       " 2,\n",
       " 2,\n",
       " 1,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 2,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 2,\n",
       " 1,\n",
       " 2,\n",
       " 2,\n",
       " 1,\n",
       " 0,\n",
       " 2,\n",
       " 2,\n",
       " 2,\n",
       " 2,\n",
       " 1,\n",
       " 2,\n",
       " 0,\n",
       " 2,\n",
       " 2,\n",
       " 1,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 2,\n",
       " 1,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 2,\n",
       " 1,\n",
       " 2,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 2,\n",
       " 1,\n",
       " 2,\n",
       " 1,\n",
       " 1,\n",
       " 1,\n",
       " 1,\n",
       " 2,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 2,\n",
       " 1,\n",
       " 0,\n",
       " 2,\n",
       " 0,\n",
       " 0,\n",
       " 2,\n",
       " 2,\n",
       " 1,\n",
       " 0,\n",
       " 2,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 2,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 1,\n",
       " 2,\n",
       " 1,\n",
       " 1,\n",
       " 1,\n",
       " 0,\n",
       " 1,\n",
       " 2,\n",
       " 2,\n",
       " 2,\n",
       " 1,\n",
       " 2,\n",
       " 1,\n",
       " 2,\n",
       " 1,\n",
       " 1,\n",
       " 0,\n",
       " 2,\n",
       " 0,\n",
       " 1,\n",
       " 1,\n",
       " 1,\n",
       " 2,\n",
       " 0,\n",
       " 2,\n",
       " 2,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 1,\n",
       " 1,\n",
       " 2,\n",
       " 2,\n",
       " 2,\n",
       " 0,\n",
       " 1,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 2,\n",
       " 1,\n",
       " 1,\n",
       " 0,\n",
       " 2,\n",
       " 1,\n",
       " 2,\n",
       " 1,\n",
       " 2,\n",
       " 0,\n",
       " 1,\n",
       " 2,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 1,\n",
       " 1,\n",
       " 0,\n",
       " 1,\n",
       " 0,\n",
       " 0,\n",
       " 0,\n",
       " 1,\n",
       " 2,\n",
       " 0]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "assignments"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x11e2e6198>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter([data[i][0] for i in range(N) if assignments[i] == 0],\n",
    "[data[i][1] for i in range(N) if assignments[i] == 0])\n",
    "\n",
    "plt.scatter([data[i][0] for i in range(N) if assignments[i] == 1],\n",
    "[data[i][1] for i in range(N) if assignments[i] == 1])\n",
    "\n",
    "plt.scatter([data[i][0] for i in range(N) if assignments[i] == 2],\n",
    "[data[i][1] for i in range(N) if assignments[i] == 2])\n",
    "\n",
    "# data[assignments[0]]\n",
    "# assignments[5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([ 0.65314572, -0.04562889]),\n",
       " array([ 0.6841291 , -0.09404843]),\n",
       " array([0.60157895, 0.09895166]))"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rep0 = sum(data[group0]/len(group0))\n",
    "rep1 = sum(data[group1]/len(group1))\n",
    "rep2 = sum(data[group2]/len(group2))\n",
    "rep0,rep1,rep2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((-2, 2), (-1, 2))"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(rep0[0],rep0[1])\n",
    "plt.scatter(rep1[0],rep1[1])\n",
    "plt.scatter(rep2[0],rep2[1])\n",
    "plt.ylim(-2,2), plt.xlim(-1,2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "#find distance from each representative, for every vector, \n",
    "#reassign smallest distance\n",
    "distances = [[npl.norm(data[i] - rep0),\n",
    "  npl.norm(data[i] - rep1),npl.norm(data[i] - rep2)] for i in range(N)]\n",
    "updAssignments = [min((val, idx) for (idx, val) in enumerate(distances[i])) for i in range(N)]\n",
    "for i in range(N):\n",
    "    assignments[i] = updAssignments[i][1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([-1.24471639, -0.35399685])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data[0]-rep0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x11e58ff28>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter([data[i][0] for i in range(N) if assignments[i] == 0],\n",
    "[data[i][1] for i in range(N) if assignments[i] == 0])\n",
    "\n",
    "plt.scatter([data[i][0] for i in range(N) if assignments[i] == 1],\n",
    "[data[i][1] for i in range(N) if assignments[i] == 1])\n",
    "\n",
    "plt.scatter([data[i][0] for i in range(N) if assignments[i] == 2],\n",
    "[data[i][1] for i in range(N) if assignments[i] == 2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "group0 = [i for i in range(N) if assignments[i] == 0] #indices of group members\n",
    "group1 = [i for i in range(N) if assignments[i] == 1]\n",
    "group2 = [i for i in range(N) if assignments[i] == 2]\n",
    "\n",
    "rep0 = sum(data[group0]/len(group0))\n",
    "rep1 = sum(data[group1]/len(group1))\n",
    "rep2 = sum(data[group2]/len(group2))\n",
    "\n",
    "distances = [[npl.norm(data[i] - rep0),\n",
    "  npl.norm(data[i] - rep1),npl.norm(data[i] - rep2)] for i in range(N)]\n",
    "updAssignments = [min((val, idx) for (idx, val) in enumerate(distances[i])) for i in range(N)]\n",
    "for i in range(N):\n",
    "    assignments[i] = updAssignments[i][1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x11e5f9e80>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter([data[i][0] for i in range(N) if assignments[i] == 0],\n",
    "[data[i][1] for i in range(N) if assignments[i] == 0])\n",
    "\n",
    "plt.scatter([data[i][0] for i in range(N) if assignments[i] == 1],\n",
    "[data[i][1] for i in range(N) if assignments[i] == 1])\n",
    "\n",
    "plt.scatter([data[i][0] for i in range(N) if assignments[i] == 2],\n",
    "[data[i][1] for i in range(N) if assignments[i] == 2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x11e6b6320>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "group0 = [i for i in range(N) if assignments[i] == 0] #indices of group members\n",
    "group1 = [i for i in range(N) if assignments[i] == 1]\n",
    "group2 = [i for i in range(N) if assignments[i] == 2]\n",
    "\n",
    "rep0 = sum(data[group0]/len(group0))\n",
    "rep1 = sum(data[group1]/len(group1))\n",
    "rep2 = sum(data[group2]/len(group2))\n",
    "\n",
    "distances = [[npl.norm(data[i] - rep0),\n",
    "  npl.norm(data[i] - rep1),npl.norm(data[i] - rep2)] for i in range(N)]\n",
    "\n",
    "updAssignments = [min((val, idx) for (idx, val) in enumerate(distances[i])) for i in range(N)]\n",
    "for i in range(N):\n",
    "    assignments[i] = updAssignments[i][1]\n",
    "\n",
    "plt.scatter([data[i][0] for i in range(N) if assignments[i] == 0],\n",
    "[data[i][1] for i in range(N) if assignments[i] == 0])\n",
    "\n",
    "plt.scatter([data[i][0] for i in range(N) if assignments[i] == 1],\n",
    "[data[i][1] for i in range(N) if assignments[i] == 1])\n",
    "\n",
    "plt.scatter([data[i][0] for i in range(N) if assignments[i] == 2],\n",
    "[data[i][1] for i in range(N) if assignments[i] == 2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x11e831160>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "group0 = [i for i in range(N) if assignments[i] == 0] #indices of group members\n",
    "group1 = [i for i in range(N) if assignments[i] == 1]\n",
    "group2 = [i for i in range(N) if assignments[i] == 2]\n",
    "\n",
    "rep0 = sum(data[group0]/len(group0))\n",
    "rep1 = sum(data[group1]/len(group1))\n",
    "rep2 = sum(data[group2]/len(group2))\n",
    "\n",
    "distances = [[npl.norm(data[i] - rep0),\n",
    "  npl.norm(data[i] - rep1),npl.norm(data[i] - rep2)] for i in range(N)]\n",
    "\n",
    "updAssignments = [min((val, idx) for (idx, val) in enumerate(distances[i])) for i in range(N)]\n",
    "for i in range(N):\n",
    "    assignments[i] = updAssignments[i][1]\n",
    "\n",
    "plt.scatter([data[i][0] for i in range(N) if assignments[i] == 0],\n",
    "[data[i][1] for i in range(N) if assignments[i] == 0])\n",
    "\n",
    "plt.scatter([data[i][0] for i in range(N) if assignments[i] == 1],\n",
    "[data[i][1] for i in range(N) if assignments[i] == 1])\n",
    "\n",
    "plt.scatter([data[i][0] for i in range(N) if assignments[i] == 2],\n",
    "[data[i][1] for i in range(N) if assignments[i] == 2])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Interactive visualization: https://editor.p5js.org/bartle/sketches/sH4DiPmda"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
